precision mediump float;
uniform sampler2D uSampler;
uniform sampler2D uLutSampler;
varying vec2 vTexCoord;

void main() {
    vec4 texColor = texture2D(uSampler, vTexCoord);
    float blueColor = texColor.b * 63.0;
    vec2 quad1, quad2;
    quad1.y = floor(floor(blueColor) / 8.0);
    quad1.x = floor(blueColor)- (quad1.y * 8.0);

    quad2.y = floor(ceil(blueColor) / 8.0);
    quad2.x = ceil(blueColor) - (quad2.y * 8.0);

    vec2 texPos1, texPos2;

    //1/8 = 0.125
    //512x512
    //0.5/512.0 为了向上取整
    //0.125- 1.0/512.0 是为了去色块内的值
    texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + (0.125 - 1.0 /512.0)*texColor.r;
    texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + (0.125 - 1.0/512.0)*texColor.g;

    texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + (0.125 - 1.0/512.0)*texColor.r;
    texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + (0.125 - 1.0/512.0)*texColor.g;

    vec4 newColor1 = texture2D(uLutSampler, texPos1);
    vec4 newColor2 = texture2D(uLutSampler, texPos2);
    vec4 newColor = mix(newColor1, newColor2, fract(blueColor));

    gl_FragColor = newColor;

}
